package com.hnx.admin.aurora.system.service;

import com.hnx.admin.aurora.system.domain.param.dept.query.DeptQuery;
import com.hnx.admin.aurora.system.domain.param.role.query.UserRoleQuery;
import com.hnx.admin.aurora.system.domain.param.user.form.*;
import com.hnx.admin.aurora.system.domain.param.user.query.LoginQuery;
import com.hnx.admin.aurora.system.domain.param.user.query.UserQuery;
import com.hnx.admin.aurora.web.json.ResultJson;
import org.springframework.security.core.userdetails.UserDetailsService;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public interface UserService extends UserDetailsService {
    ResultJson login(LoginQuery loginBody);

    ResultJson getInfo();
    ResultJson getInfo(String userId);

    ResultJson getRouters();

    ResultJson getUserList(UserQuery userParam);

    ResultJson deptTree(DeptQuery dept);

    ResultJson updateUser(UserForm user);

    ResultJson updateUserStatus(UserForm user);

    ResultJson deleteUserByIds(UserDelForm userDelForm);

    ResultJson resetPwd(UserForm user);

    ResultJson selectRolesByUserId(String userId);

    ResultJson insertUserAuth(UserRoleForm user);

    ResultJson insertUser(UserForm user);

    void export(HttpServletResponse response) throws IOException, NoSuchFieldException;

    ResultJson selectAllocatedList(UserRoleQuery user);

    ResultJson selectUnallocatedList(UserRoleQuery user);
}
